Можно создать допольнительного бота, который будет союзником 1 и 2 игроку, но врагом 3 и 4. ну и собственно дается общий контроль на этого бота.
Игрок - Make игрок 1 treat игрок 2 as an игроки с общими войсками
так как там нет геометрии (а только источники частиц), то так просто в один клик не рассчитываются границы
надо вручную создавать объект "форма" с нужным радиусом и координатами, в редакторе узлов model editor'а
достаточно сделать 2 модели 1 - это верхняя часть юнита до пояса с анимациями атаки и прочего с руками. 2я - модель это нижняя часть юнита от пояса, тобиш ноги с анимкой хотьбы бега и прочего. добавляешь в карту, соединяешь, пишеш триггеры и все готово.
Нашёл решение для тебя.
Пол-ночи провозился, но нашёл. почему-то это стало делом чести - открыть сию карту в редакторе
В общем, берёшь архив из аттача и тупо суёшь папку UI в корень варкрафта. После этого карта будет открываться любым вариантом редактора - как JNGP (любым), так и (даже!) стандартным.
Важно: локальные файлы должны быть разрешены.
Только там такой срач и дичь, что лучше реально своими руками с нуля писать...
Ах, я понял чего ты хочешь конкретно сейчас. Чтобы модель смотрела в камеру, словно на экране выбора персонажа? В таком случае ситуация немного упрощается.
Нам больше не нужно хранить текущую матрицу поворота эффекта, ведь мы не производим ее вращение, вместо этого мы высчитывает всю необходимую ориентацию из положения камеры и самого эффекта. Подход, в целом, остается прежним, но для поиска осей ориентации мы теперь будем использовать некоторый вспомогательный вектор, чье направление совпадает с направлением глобальной оси Z, и путем векторного произведения этого вспомогательного вектора на вектор оси X эффекта (получаемый как и прежде p2 - p1) мы получаем вектор ориентации эффекта Y, а векторное произведение X на Y нам даст ось Z эффекта.
Весь процесс можно разжевать на множество абзацев, но делать этого нет смысла. Я проще скину твою карту с новым вариантом.
Тем не менее, я вижу некоторое непонимание темы и потому считаю должным указать на некоторые ошибки в твоем прошлом коде
Код
private function RotationMatrixToEuler takes MATRIX3 R returns VECTOR3
local real x
local real y
local real z
local real sy = SquareRoot(R.m11 * R.m11 + R.m21 * R.m21)
local boolean singular = sy < .000001 or sy == 0 // If
if not singular then
set x = Atan2(R.m32 , R.m33)
set y = Atan2(-R.m31, sy)
set z = Atan2(R.m21, R.m11)
else
set x = Atan2(-R.m23, R.m22)
set y = Atan2(-R.m31, sy)
set z = 0
endif
return VECTOR3.New_1(x, y, z)
endfunction
Я не понимаю, как работает эта функция. В моем понимании, преобразование матрицы поворота в углы Эйлера происходит за счет обратного преобразования. То есть, чтобы преобразовать матрицу в Эйлер, необходимо знать как преобразуется Эйлер в матрицу, поскольку это обратные друг другу процессы. В новом примере я ее переписал.
Код
set rotation.m11 = X.x
set rotation.m12 = X.y
set rotation.m13 = X.z
set rotation.m21 = Y.x
set rotation.m22 = Y.y
set rotation.m23 = Y.z
set rotation.m31 = Z.x
set rotation.m32 = Z.y
set rotation.m33 = Z.z
Здесь идет неверное назначение параметров матрицы. Дело в том, что матрица записывается следующим образом (из readme библиотеки Math)
m11 m12 m13
m21 m22 m23
m31 m32 m33
При этом, оси записываются слева направо, столбиками, то есть , ось X здесь, это m11, m21 и m31. Следовательно верной записью будет
Код
set rotation.m11 = X.x
set rotation.m21 = X.y
set rotation.m31 = X.z
set rotation.m12 = Y.x
set rotation.m22 = Y.y
set rotation.m32 = Y.z
set rotation.m13 = Z.x
set rotation.m23 = Z.y
set rotation.m33 = Z.z
И самая ложная строка
set rotation = MATRIX3.New_0()
Это создаст нулевую матрицу, то есть матрицу, все значения которой - нули. Базовая же матрица поворота, это единичная матрица, то есть матрица, чья главная диагональ состоит из единиц, а все остальное - нули.
Но это просто заметки, в текущей версии этих участков кода больше нет.
там 2 баффа, для ближнего и дальнего боя. Ты поменял 1 из баффов, а другой не поменял, все дела.
Просто можно откопировать его в строке баффов и написать 2 раза.
Пункт " убить боевую единицу" отвечает за то сможет ли урон от яда убить Юнита, если флаг не установлен то у Юнита останется 1-2 хп. Но яд не может его убить.
Разумеется не работают яд. Стрелы на маг иммунитет, ибо это активный автокаст.
Чтобы автокаст стрелы работали на маг. Имун нужно чтобы способность относилась к герою, требуемый для изучения уровень был выше 1. Вот и все.
darkowlom, ну я сабжом расставил нужные текстуры. Из всего что пора пришло в голову только использовать триггер "Окружение" и в нужных местах областями ставить текстуры. Но это как муторно.. Вот и решил спросить можно ли обойти ограничения.
Это делается функциями GetTerrainType и SetTerrainType.
Рисуешь на тех же самых текстурах определенную допустим квадратную локацию.
Затем for стартовоеX до конечноеX внутри for СтартовоеY до КонечноеY если getterraintype = точтонадозаменить то setterraintype на другую текстуру.
Других адекватных методов нет. Триггер который ты привел использует локации (точки), а значит - это возня с точками - возможно утечки.
Я используя эти функ целиком всю карту стираю размера 256x256 и отрисовываю 10к тайлов, в одном проекте). Лаг если и есть во время перерисовки - то незаметный, не больше 0.5сек
Идея!
В модели один слой, а можно выделить ветви и на новый слой их, а там уже можешь делать смещение без коверкания наложения текстуры.
Что-то с моделью этой, не получается провернуть указанную операцию, постоянно вылетает ошибка.
Насколько я понял, тебе нужно просто сменить текстуру. Для этого тебе по меньшей мере нужна текстура. Можно взять либо стандартную, либо создать самому (что довольно просто, если знать как).
Чтобы создать текстуру, возьми любое изображение, открой его в ФШ и сохрани как tga 32 бит с размером до 512х512 (вроде бы можно делать любой размер, не превышающий 1024х768, но я советую сохранять пропорции и делать размер не больше 512х512, или кратных половине этого числа (256/128/64/32) , за тем открой в War3 Image Extractor и переведи формат tga в blp. Потом открываешь модельку - редактор текстур и переименовываешь нужную текстуру в ту которая тебе нужна (они должны быть в одной папке) жмешь - Enter - .
Смотри карту: xgm.guru/files/100/219921/comments/408338/0.w3x
Там для героев созданы их копии с другой моделью и нестандартные способности на основе способности Тёмный, которая заменяет юнита на указанного другого. Такой вариант не меняет имя героя, порядок предметов в инвентаре, кулдаун на предметах и способностях, но что-то упоминали ранее о возможных глюках с наложенными заклинаниями. Триггерно при использовании способности не на иллюзии героя добавляем ему нестандартную способность нужного типа.
Вариант с заменой юнита, примерно как ты описал, приведёт к сбросу имени, опыта, способностей, кулдаунов, предметов и заклинаний.
Вариантом морфа героя через руны не умею пользоваться.
Вариант с заменой текстуры персонажа через способность Вырвать дерево требует замены текстур деревьев в карте, а это плохо, так как героев много. Ещё это подразумевает умение работать с 3D-редакторами, которого, как предполагаю, у тебя нет.
сделай ландшафт этого места с помощью инструмента "повысить на 1/на 2"
замени рынку модель, к примеру, на некрополь (потому что он красиво парит, хотя можешь на что угодно другое, что выглядит в небе более менее эстетично) и сделай вид, что парящий высоко в небе некрополь с барыгой - это не баг, а фича
Кстати, у меня вот только что мыслышка возникла. А попробуй убрать рынку галочку с поля "является зданием", тем самым превратив его из здания в юнита. Может, хоть это поможет
У декораций для вариаций есть несколько моделей с тем же именем и припиской: ...00, ...01, ...02... А в Редакторе объектов для модели указывается только имя без приписки. У башен же есть несколько вариаций анимации Stand, которые идут для Смотровой башни, Осадной башни, Стрелковой башни и Магической, странно, что у тебя отображает лишь Смотровую и Осадную. Запамятовал, можно ли триггером выставлять декорациям теги анимации, но если да, то добавляй тег Смотровой башни. Другой вариант - сделать в Редакторе объектов Боевую единицу Башню со способностью Москиты, чтобы она была невыбираема. Способность эту можно поставить через JNGP или выбрав строку со способностями, нажав Shift+Enter, напечатать Aloc.
bazeba, чтобы мазохисты могли убирать часть утечек и таким образом и дальше заниматься мазохизмом
там ещё точка утекает
Position of () создаёт точку которая утекает
Да, но сами текстуры находятся в Terrainart/.../
Это похоже что варовские архивы надо обсматривать.
Sylvanas, я просмотрел архивы и вот что нашел: В архивах Вара (War3 и War3x) есть другие архивы, в их "корне" (они находятся вне папок). Эти архивы - маленькие (названы одной буквой). В них - текстуры клиффов для каждого вида местности. В папке "TerrainArt" (находится в War3 и в War3x) есть файл-таблица Excel: CliffTypes.slk - он содержит ссылки на клиффы. По-видимому, этот файл ссылается на клиффы внутри маленьких архивов, игра по этим ссылкам считывает их из малых архивов и воспроизводит в игре. Все эти клиффы в малых архивах имеют имена "Cliff1" и "Cliff0". Т.е., текстуры клиффов разных видов местности (которые непосредственно считываются Варом) имеют одинаковое имя И находятся как бы в разных "папках" (малые архивы внутри основного). Вот почему возник такой глюк с заменой одного файла.
Hargeus, тут несколько вариантов возможно. Первым делом проверь пути к импортированным файлам, не оставил ли в пути к текстуре "war3Imported\", который обычно надо удалять?
Если с этим нормально, то текстура могла быть не прописана в модели, как указал Hate. Кидай модель и текстуру в одну папку без кириллицы в пути к ней, например, в корневую папку диска. Открываешь модель в w3me, нажимаешь Windows->Texture Manager, там щёлкаешь правой кнопкой мыши и в меню Import, указываешь свою текстуру. Потом открываешь Windows->Material Manager, где перебираешь все элементы списка в поисках текстуры, которую надо заменить, меняя её на свою. Либо создаёшь новый Material со своей текстурой, а далее в Geoset Manager перебором подставляешь свой материал на место других и обратно, пока не найдёшь нужную поверхность.
Если получилось всё нормально, то сохраняй, если что-то не вышло, либо в игре всё равно лишь тень модели, то приложи сюда карту с моделью, посмотреть в чём дело может быть.
8gabriel8, приоритет менять нельзя
стандартный ии использует это поле для контроля юнитов
пишем свой ии в котором вместо приоритета юзаем свою переменную которой можем задавать любое значение 8gabriel8:
Но для меня это путь в Москву через Владивосток
ну если между тобой и Москвой находится Владивосток то иначе никак(а вар3 как раз расположен за Владивостоком)
avuremybe, я уже впринципе нормально их знаю, но не знаю как лучше реализовать подобное.
Нашел решение. На событие боевая единица умирает выбирать врагов в диапазоне откидывая тех кого невидно и атаковать случайного из них.
//globals
integer array VariousFramesAddresses
constant integer GOLD_TEXTFRAME_ADDRESS_INDEX=1
constant integer LUMBER_TEXTFRAME_ADDRESS_INDEX=2
constant integer UPKEEP_TEXTFRAME_ADDRESS_INDEX=3
constant integer SUPPLY_TEXTFRAME_ADDRESS_INDEX=4
//memhack init
set pGetFrameTextAddress = GameDLL + 0x61C7B0
function GetFrameTextAddress takes string name, integer id returns integer
return CallFastCallWith2Args(pGetFrameTextAddress, GetStringAddress(name), id)
endfunction
function GetResourceBarsAddresses takes nothing returns nothing
local integer a=GetFrameTextAddress("ResourceBarGoldText",0)
if a>0 then
set VariousFramesAddresses[GOLD_TEXTFRAME_ADDRESS_INDEX]=a
endif
set a=GetFrameTextAddress("ResourceBarLumberText",0)
if a>0 then
set VariousFramesAddresses[LUMBER_TEXTFRAME_ADDRESS_INDEX]=a
endif
set a=GetFrameTextAddress("ResourceBarSupplyText",0)
if a>0 then
set VariousFramesAddresses[SUPPLY_TEXTFRAME_ADDRESS_INDEX]=a
endif
set a=GetFrameTextAddress("ResourceBarUpkeepText",0)
if a>0 then
set VariousFramesAddresses[UPKEEP_TEXTFRAME_ADDRESS_INDEX]=a
endif
endfunction
call CallThisCallWith2Args(GameDLL+0x60CA10,VariousFramesAddresses[UPKEEP_TEXTFRAME_ADDRESS_INDEX],GetStringAddress("random str "+I2S(GetRandomInt(1,2000))))
Ну содержимое у restore само собой разное, в детекте урона новый хук на выход, вам нужна функция загрузки библиотеки?
Это же дело над:
function LoadLibrary takes string nDllName returns integer
if pLoadLibraryA == 0 then
set pLoadLibraryA = GetModuleProcAddress("Kernel32.dll", "LoadLibraryA" )
endif
if pLoadLibraryA != 0 then
return CallStdcallWith1Args(pLoadLibraryA,GetStringAddress(nDllName))
endif
return 0
endfunction
Никак нельзя отключить ИИ нейтральных игроков, ваще никак! Один и тот же вопрос бля каждую неделю.
Не используйте нейтралов в качестве ходячих и атакующих крипов, не оберётесь багов.
Насчет умных - а как в доте сделано, а там это сделано только когда играют обсервы + там пипец много костылей или багов, вроде реаз в 3 делать каждому юниту -SetUnitPosition в его текущие координаты, полностью тригггерный ии башен и автоатаки крипов (это внезапно еще и ресурсоёмко).
а почему так? отравленное оружие настраивает на сколька понизить в %. а сколько не ставь, все одно. мб что-то не правильное. абилка что ли бракованная
все врубился, понял формулу: скорость = Текущая скорость - (Текущая скорость * процент снижения)
слишком большие проценты ставил, в результате не видел, и выходило ниже скорость. А так как стоят ограничения в скорости (мин = 150, макс = 400 в константах), то упиралась в минималку, и не видел изменения, из-за чего ошибочно начал теории строить.
в абилках "отравленное оружие" и "яд" дриады - поля "Данные - Фактор скорости атаки" и "Данные - Фактор скорости перемещения" - перепутаны, в "фактор скорости атаки" указывают понижение в процентах скорости движения, а в "фактор скорости перемещения" указывают понижение в процентах скорости атаки .
Вопрос решён. Оказывается это всё из-за моей тупости и из-за того, что чем больше войск заливается, тем меньше урона каждый из них получает. Если тестить по одному футмену, то урон нормальный, а если тестить группу, то урон уменьшается.
Если нужна карта, то могу скинуть :)
Но, думаю, что проблема не в ней, да и мой "суперпроект" раскрывать не хотелося.
Повтори действие наново, удали нестандартную модель, переназначь модель орудийного расчета и вообще всегда делай копии своей карты, а вообще делай эксперементы в разних картах а то что получилось лишь тогда пихай в карту....
8gabriel8, Вот, упрямый ведь! Берёшь скачиваешь свою модель, которую ты кинул в топик, рассчитываешь границы, импортируешь, для точности в новую карту 32x32 и если после этого портрет невидим, я в блоге напишу, что я гей. Конечно при условии, что ты все правильно сделаешь.
Если нужно, чтобы было 2 в одном, то, думаю, тут надо чуток триггеров, надо сделать 2 способности, одну из которых скрыть, а другой дать всё описание. И запускать вторую триггером, через событие запуска заклинания.
Нет, далеко не все фишки и особенности известны. Все способности описаны в движке игры, защита от магии горного великана это клон множества абилок защиты от магии, главная их суть - выдать классификацию герой юниту. Т.е после появления этой способности горный великан становится героем и его нельзя полиморфить, переманивать и так далее.
Применять на маг имунных можно только высшие заклинание - т.е только геройские, у который требование к уровню выше 1, в до целях уязвимые\неуязвимые.
Я бы удалил все файлы из данной карты, затем вставил туда все файлы из бекапа, а потом макросом прошелся по каждому файлу, изменив ему стандартный путь на нужный. Рекомендую макрос Easy Macro Recorder.
Вариации работают так: в адресе файла модели декорации указывается типа [MyModel].mdx, но этого файла на самом деле нет, а есть только файлы вариации типа [MyModel]0.mdx, [MyModel]1.mdx, [MyModel]2.mdx и т. п.
система урона + ледяные стрелы = при получении урона, идет проверка на бафф, удаляешь бафф и, либо кастуешь даммиком способность кислотная бомба или духовное пламя с отриц. значением минус в том что бафф будет висеть как положительный. Либо под таймером даешь даешь способность повышения защиты с отриц. значением.
Учитывая что 21 век, систему урона найти и поставить, не составит труда.
Нашёл решение для тебя.
Пол-ночи провозился, но нашёл. почему-то это стало делом чести - открыть сию карту в редакторе
В общем, берёшь архив из аттача и тупо суёшь папку UI в корень варкрафта. После этого карта будет открываться любым вариантом редактора - как JNGP (любым), так и (даже!) стандартным.
Важно: локальные файлы должны быть разрешены.
Только там такой срач и дичь, что лучше реально своими руками с нуля писать...
В одной из миссий за нежить в TFT есть рычаг, при уничтожении которого определённая область заливается водой. Посмотри, как там сделано. Там Артасу и Ануб'араку надо было пройти сквозь тучу башен, герои их залили водой, башни уничтожились.
По какой-то загадочной причине некоторые давно обновлённые модели в кампании стали старыми. После того, как модель залил заново, стало нормально вроде.
Возможно, крашнулось при работе с текстурой, но без карты точно не скажешь. Удаляй модели и текстуры, которые добавлял перед крашем, пока не найдешь виновника.
Для каждого дерева нужны три модели: обычная, неактивная (с названием Doodads\Terrain\AshenTree\AshenTree0S.mdx, например) и неактивная разрушенная (Doodads\Terrain\AshenTree\AshenTree0D.mdx). У неактивных моделей должна быть только одна анимация — Stand. У первой — только деревце, у второй — только пенёк, соответственно.
Когда с деревом никто не взаимодействует, отображаются неактивные модели. Ты их не заменил, потому такая вот фигня.
Как сделать полноценно работающие деревья с моделями, не заменяющими стандартные, я не знаю. Возможно, никак.
Смотри, в основном в моделях так, либо просто удаляешь в пути текстуры war3mapimorted\ и все, а иногда требуют и так Textures\имя файла импорта.blp. сами модели и без пути который тоже можно задать хорошо работают. а посмотреть что требуется, нужно зайти в саму модельку через ME и в менеджере текстур глянуть путь, там могут быть и стандартные пути текстур которые есть в варике их импортировать не надо. Думаю понятно объяснил.
PhysCraft, он уже пробовал этот метод. Не подошёл из-за белых портретов. Steal nerves, извини, обманул тебя. Чтобы сделать вынесение в отдельную поверхность, надо сначала удвоить вершины. Но только почему-то нормально не работает, часть вершин не удваивается.
Сейчас посмотрю, как с анимацией текстур работал.
А ведь ты не сделал копию анимаций, просто продублировал имеющиеся, дав им название с тэгом. Это не даст желаемого.
Извини, но пока путного не получается. Может быть опосля придёт умная мысля.
По идее всё равно надо делать реальную копию анимационного ряда, а не просто дать новое название тем же кадрам. Может быть ты в процессе копирования кадров согласишься, что легче создать кучу крестьянок с новыми моделями в РО и триггерно их заменять, чем одну почти такую же тяжёлую за счёт анимаций модель с тэгами. При этом не факт, что у неё с портретом будет порядок.
напиши создателю mdlvis
если найдёшь его а также у него будут исходники и желание фиксить баги то мб пофиксит
но скорее всего как минимум 2 и 3 пунктов будут отсутствовать
Это зависит от камер и анимаций. Сначала воспроизводится анимация Birth, которая и представляет приближение, потом Stand, там везде свои камеры. Посмотри в war3me у модели экрана, как там сделано. Подробную статью о работе с камерами в этих моделях не встречал. Вариант ApEJI про вращение модели вместо кучи камер тоже норм. Типа в Birth вращение сделать. Но у меня, например, не такие высокие навыки в анимировании, чтобы сразу много объектов правильно сдвигать, мне предпочтительнее камер наделать.
"Скилл джаггера их доты" выложен в миллион и одном месте, даже я делал разбор - xgm.guru/p/wc3/omnislash
Реализация примитивна, мгновенное перемещение к цели и приказ атаковать, можно так же эмитировать атаку анимацией и уроном от лица героя как сделано в доте.
» WarCraft 3 / Что не так с игроками
» WarCraft 3 / Как сделать юнита не выбираемым?
» WarCraft 3 / Проблемы с Текстурами
» WarCraft 3 / атака в движении
» WarCraft 3 / Способности Яда
» WarCraft 3 / По текстурам
» WarCraft 3 / Парящие острова
» WarCraft 3 / Вариации декораций
» WarCraft 3 / Правильно ли я сделал
» WarCraft 3 / Приоритет атаки
» WarCraft 3 / Мемхак
» WarCraft 3 / Передвижение
» WarCraft 3 / Анимации портрета
» WarCraft 3 / Благословение Элуны
» WarCraft 3 / Удобный Импорт
» WarCraft 3 / Использование скилла в стане
» WarCraft 3 / Триггерная или стандартная способность?
» WarCraft 3 / При изучение способности иконка пропадает.
» WarCraft 3 / Не получается импортировать
» WarCraft 3 / Триггерный склон?
» WarCraft 3 / Ошибка при загрузке карты в World Edit
» WarCraft 3 / Снова проблема в модели
» WarCraft 3 / Цвет текстуры
» WarCraft 3 / Ошибка mdlvis
» WarCraft 3 / Меню кампании